package com.newtouch.bxzs.database.synchronize.mapper;

import com.newtouch.bxzs.common.base.model.*;
import com.newtouch.bxzs.database.synchronize.model.AdvertisementBO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * <b>History:</b>
 * <table border="1">
 * <tr>
 * <th>Date</th>
 * <th>Operator</th>
 * <th>Memo</th>
 * </tr>
 * <tr>
 * <td>2021/3/2 14:55</td>
 * <td>yuanjie</td>
 * <td>Create</td>
 * </tr>
 * </table>
 *
 * @author yuanjie
 * @version 1.0.0
 * @since 1.0.0
 */
@Mapper
public interface BatchMapper {

    /**
     * 获取可撤销的广告信息
     * @return 广告信息
     */
    List<AdvertisementBO> getRevokeAdvertisement();

    /**
     * 获取启动页可发布的广告信息
     * @return 广告信息
     */
    List<AdvertisementBO> getPublishAdvertisement();

    /**
     * 发布/撤销广告
     * @param advertisement 广告信息
     * @return 修改条数
     */
    int updateAdvertisement(@Param("list") List<AdvertisementBO> advertisement);

    /**
     *  获取待发布和撤销的产品id
     * @return 产品信息
     */
    List<Product>getProduct();

    /**
     * 发布/撤销产品
     * @param products 产品信息
     * @return 成功标识
     */
    int updateProduct(@Param("list") List<Product> products);

    /**
     * 获取待发布和撤销的通知id
     * @return 通知信息
     */
    List<Notification> getNotification();

    /**
     * 发布/撤销通知
     * @param notifications 通知信息
     * @return 成功标识
     */
    int updateNotification(@Param("list") List<Notification> notifications);

    /**
     * 获取待发布和撤销的知识小灵通信息
     * @return 知识小灵通信息
     */
    List<KnowledgeCard>getKnowledgeCard();

    /**
     * 撤销知识小灵通
     * @param knowledgeCards 知识小灵通信息
     * @return 成功标识
     */
    int updateKnowledgeCard(@Param("list") List<KnowledgeCard> knowledgeCards);

    /**
     * 获取待发布和撤销的知识库信息
     * @return 知识库
     */
    List<KnowledgeBase>getKnowledgeBase();

    /**
     * 撤销知识知识库
     * @param knowledgeBases 知识库信息
     * @return 成功标识
     */
    int updateKnowledgeBase(@Param("list") List<KnowledgeBase> knowledgeBases);

    /**
     * 获取提醒升级用户名单
     * @param expireTime
     * @return
     */
    List<User> getRemindToUpgrade(String expireTime);

    /**
     * 获取应该结束的营销活动
     * @param activityStatus 营销活动状态
     * @return 营销活动id
     */
    List<Activity>getMarketingActivity(String activityStatus);

    /**
     * 获取应该结束的营销会议
     * @param conferenceStatus 营销会议状态
     * @return 营销会议id
     */
    List<Conference>getMarketingConference(String conferenceStatus);

    /**
     * 结束营销活动
     * @param list 营销活动id
     * @param activityStatus 营销活动结束状态
     * @return 成功标识
     */
    int finishMarketingActivity(@Param("list") List<Activity>list,@Param("activityStatus") String activityStatus);

    /**
     * 结束营销会议
     * @param list 营销会议id
     * @param conferenceStatus 营销会议结束状态
     * @return 成功标识
     */
    int finishMarketingConference(@Param("list") List<Conference>list,@Param("conferenceStatus") String conferenceStatus);

    /**
     * 获取待发布和撤销的课程信息
     * @return 课程id和课程状态
     */
    List<Course>getCourse();

    /**
     * 发布/撤销课程
     * @param list 课程信息
     * @return 成功标识
     */
    int updateCourseStatus(@Param("list") List<Course> list);

    /**
     * 获取待发布和撤销的考试信息
     * @return 考试id和考试状态
     */
    List<Examination>getExamination();

    /**
     * 发布/撤销考试
     * @param list 考试信息
     * @return 成功标识
     */
    int updateExaminationStatus(@Param("list") List<Examination> list);
}
